/**
 * Created by lixin on 2019-12-05
 */

const Service = require('egg').Service;


const DATA_BASE_STAFF = 'EGG_EXAMPLE';

class StaffService extends Service {

    /* 根据员工code精确查找员工 */
    async query(staffCode) {

        const {app} = this;

        try {
            /* 从哪个表查什么数据 get 接受两个参数，第一个参数是表名字 第二个参数是要查找的对象 */
            const result = await app.mysql.get(DATA_BASE_STAFF, {code: staffCode});

            console.log("result", result);

            return result;

        } catch (e) {
            console.log(e);
            return null;
        }

    }

    /* 新建 */
    async create(params) {

        const {app} = this;

        try {
            const result = await app.mysql.insert(DATA_BASE_STAFF, params);
            console.log(result);
            /**
             * =>
             *  {
             *      fieldCount: 0,
             *      affectedRows: 1,// affectedRows 表示数据表中受影响的行数，数据插入成功则为1，失败则为0；
             *      insertId: 3710,// 在主键自增的情况下，insertId是数据插入成功后对应的主键id，如果主键不自增，则insertId为0。
             *      serverStatus: 2,
             *      warningCount: 2,
             *      message: '',
             *      protocol41: true,
             *      changedRows: 0
             *  }
             * */
                // 判断插入成功
            const insertSuccess = result.affectedRows === 1;

            console.log('insertSuccess', insertSuccess)

            return insertSuccess;

        } catch (e) {
            console.log(e);
            return null;
        }
    }

    /* 删除接口 */
    async delete(staffCode) {

        const {app} = this;

        try {
            const result = await app.mysql.delete(DATA_BASE_STAFF, {code: staffCode});

            /**
             * result 返回同新建一样
             * 删除成功，则 affectedRows 为 1，删除的数据不存在，则为 0。
             * */

            console.log('result', result)
            const deleteSuccess = result.affectedRows === 1;

            return deleteSuccess;
        } catch (e) {
            console.log(e);
            return null;
        }


    }

    /* 更新接口 */
    async update(params) {

        const {app} = this;

        try {
            const options = {
                where: {
                    code: params.code
                }
            };
            const result = await app.mysql.update(DATA_BASE_STAFF, params, options);

            console.log(result)

            const updateSuccess = result.affectedRows === 1;

            return updateSuccess;

        } catch (e) {
            console.log(e);
            return null;
        }


    }

}

module.exports = StaffService;
